class Solution:
    def minPathSum(self, grid: List[List[int]]) -> int:
        m=len(grid)
        n=len(grid[0])
        dp=[[0]*n for _ in range(m)]
        for i in range(1,m):
            dp[i][0]=dp[i-1][0]+grid[i-1][0]
        for i in range(1,n):
            dp[0][i]=dp[0][i-1]+grid[0][i-1]
        for i in range(1,m):
            for j in range(1,n):
                dp[i][j]=min(dp[i-1][j]+grid[i-1][j],dp[i][j-1]+grid[i][j-1])
        return dp[m-1][n-1]+grid[m-1][n-1]

'''
执行用时：
56 ms
, 在所有 Python3 提交中击败了
60.55%
的用户
内存消耗：
16.5 MB
, 在所有 Python3 提交中击败了
9.38%
的用户
'''